package com.pactera.madp.cp.service.sync;

import com.pactera.madp.cp.api.dto.sync.SyncDTO;

/**
 * @title 神策-日终批量-业务接口定义
 *  - ① 处理同步参数(数据日期)
 *  - ② 汇总数据日期数据到数据看板历史表
 *  - ③ 清空数据看板数据
 *  - ④ 汇总数据看板数据
 *  - ⑤ 汇总产品偏好数据
 *  - ⑥ 删除数据日期一周前营销线索数据
 *  - ⑦ 汇总昨日营销线索数据
 *  - ⑧ 删除数据日期一周前雷达数据
 * @date 2022-05-13
 * @author Deming.Chang
 */
public interface SyncSaEndDayService {

    /**
     * 同步参数-KEY
     */
    String PARAM_KEY_MA_DATE = "maDate";

    /**
     * ① 处理同步参数(数据日期)
     * @param dto   同步参数
     * @return  汇总数据日期
     */
    String handleSyncParams(SyncDTO dto);

    /**
     * ② 汇总数据日期数据到数据看板历史表
     * @param maDate   数据日期
     */
    void summaryMaDateHisDataBoard(String maDate);

    /**
     * ③ 清空数据看板数据
     */
    void cleanDataBoard();

    /**
     * ④ 汇总数据看板数据
     */
    void summaryDataBoard(String maDate);

    /**
     * ⑤ 汇总产品偏好数据
     * @param maDate 数据日期
     */
    void summaryPrdPreference(String maDate);

    /**
     *  输出营销线索数据
     */
    void cleanLeads(String maDate);

    /**
     * ⑦ 汇总昨日营销线索数据
     * @param maDate
     */
    void summaryLeads(String maDate);

    /**
     * ⑧ 删除删除昨日一周前雷达数据
     * @param maDate 数据日期
     */
    void cleanRadar(String maDate);

    /**
     *  神策-日终批量-核心处理类
     * @param dto 同步参数
     */
    default void handler(SyncDTO dto) {
        // 1.0 处理同步参数(数据日期)
        String maDate = this.handleSyncParams(dto);
        // 2.0 汇总数据日期数据到数据看板历史表
        this.summaryMaDateHisDataBoard(maDate);
        // 3.0 清空数据看板数据
        this.cleanDataBoard();
        // 4.0 汇总数据看板数据
        this.summaryDataBoard(maDate);
        // 5.0 汇总产品偏好数据
        this.summaryPrdPreference(maDate);
        // 6.0 清空历史营销线索数据
        this.cleanLeads(maDate);
        // 7.0 汇总数据日期数据营销线索数据
        this.summaryLeads(maDate);
        // 8.0 删除删除昨日一周前雷达数据
        this.cleanRadar(maDate);
    }

}
